package main

func validSquare(p1 []int, p2 []int, p3 []int, p4 []int) bool {
	//取4个点的两两计算长度，当且仅当总共具有2种长度（1种4条 1种2条）时为正方形
	set := make(map[int]int)
	l1 := (p1[0]-p2[0])*(p1[0]-p2[0]) + (p1[1]-p2[1])*(p1[1]-p2[1])
	set[l1]++
	l2 := (p1[0]-p3[0])*(p1[0]-p3[0]) + (p1[1]-p3[1])*(p1[1]-p3[1])
	set[l2]++
	l3 := (p1[0]-p4[0])*(p1[0]-p4[0]) + (p1[1]-p4[1])*(p1[1]-p4[1])
	set[l3]++
	l4 := (p2[0]-p3[0])*(p2[0]-p3[0]) + (p2[1]-p3[1])*(p2[1]-p3[1])
	set[l4]++
	l5 := (p2[0]-p4[0])*(p2[0]-p4[0]) + (p2[1]-p4[1])*(p2[1]-p4[1])
	set[l5]++
	l6 := (p3[0]-p4[0])*(p3[0]-p4[0]) + (p3[1]-p4[1])*(p3[1]-p4[1])
	set[l6]++

	//距离不能有0
	if _, ok := set[0]; ok {
		return false
	}

	return len(set) == 2
}
